package com.zjj.algorithm.learning.niuke;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * HJ18 识别有效的IP地址和掩码并进行分类统计
 * 较难
 * 描述
 * 请解析IP地址和对应的掩码，进行分类识别。要求按照A/B/C/D/E类地址归类，不合法的地址和掩码单独归类。
 * <p>
 * 所有的IP地址划分为 A,B,C,D,E五类
 * <p>
 * A类地址从1.0.0.0到126.255.255.255;
 * <p>
 * B类地址从128.0.0.0到191.255.255.255;
 * <p>
 * C类地址从192.0.0.0到223.255.255.255;
 * <p>
 * D类地址从224.0.0.0到239.255.255.255；
 * <p>
 * E类地址从240.0.0.0到255.255.255.255
 * <p>
 * <p>
 * 私网IP范围是：
 * <p>
 * 从10.0.0.0到10.255.255.255
 * <p>
 * 从172.16.0.0到172.31.255.255
 * <p>
 * 从192.168.0.0到192.168.255.255
 * <p>
 * <p>
 * 子网掩码为二进制下前面是连续的1，然后全是0。（例如：255.255.255.32就是一个非法的掩码）
 * （注意二进制下全是1或者全是0均为非法子网掩码）
 * <p>
 * 注意：
 * 1. 类似于【0.*.*.*】和【127.*.*.*】的IP地址不属于上述输入的任意一类，也不属于不合法ip地址，计数时请忽略
 * 2. 私有IP地址和A,B,C,D,E类地址是不冲突的
 * <p>
 * 输入描述：
 * 多行字符串。每行一个IP地址和掩码，用~隔开。
 * <p>
 * 请参考帖子https://www.nowcoder.com/discuss/276处理循环输入的问题。
 * 输出描述：
 * 统计A、B、C、D、E、错误IP地址或错误掩码、私有IP的个数，之间以空格隔开。
 * <p>
 * 示例1
 * 输入：
 * 10.70.44.68~255.254.255.0
 * 1.0.0.1~255.0.0.0
 * 192.168.0.2~255.255.255.0
 * 19..0.~255.255.255.0
 * 复制
 * 输出：
 * 1 0 1 0 0 2 1
 * 复制
 * 说明：
 * 10.70.44.68~255.254.255.0的子网掩码非法，19..0.~255.255.255.0的IP地址非法，所以错误IP地址或错误掩码的计数为2；
 * 1.0.0.1~255.0.0.0是无误的A类地址；
 * 192.168.0.2~255.255.255.0是无误的C类地址且是私有IP；
 * 所以最终的结果为1 0 1 0 0 2 1
 * 示例2
 * 输入：
 * 0.201.56.50~255.255.111.255
 * 127.201.56.50~255.255.111.255
 * 复制
 * 输出：
 * 0 0 0 0 0 0 0
 * 复制
 * 说明：
 * 类似于【0.*.*.*】和【127.*.*.*】的IP地址不属于上述输入的任意一类，也不属于不合法ip地址，计数时请忽略
 *
 * @author zjj_admin
 * @date 2023/2/9 20:13
 */
public class Test18 {

    public static void main(String[] args) {
//        Scanner in = new Scanner(System.in);
//        // 注意 hasNext 和 hasNextLine 的区别
//        // 注意 while 处理多个 case
//        List<String> list = new ArrayList<>();
//        while (in.hasNext()) {
//            list.add(in.nextLine());
//        }
//        System.out.println("list = " + list);

        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) {
            int a = in.nextInt();
            int b = in.nextInt();
            System.out.println(a + b);
        }
    }
}
